var isUseSDK = true;
var _banner = null;

var wxUtil = {
    /**是否是微信平台*/
    isWxPlatFrom: function () {
        let isWx = cc.sys.platform === cc.sys.WECHAT_GAME;
        console.log('wxUtil--isWxPlatFrom:'+isWx);
        return isWx;
    },
    /** 显示转发菜单 */
    showShareMenu: function () {
        if (!this.isWxPlatFrom()) return;
        wx.showShareMenu();
    },
    /** 隐藏转发菜单 */
    hideShareMenu: function () {
        if (!this.isWxPlatFrom()) return;
        wx.hideShareMenu();
    },
    /** 监听被动转发 */
    onShareAppMessage: function (title, imageUrl) {
        if (!this.isWxPlatFrom()) return;
        //if (isMd5) imageUrl = this.getTextureUrlAtWechat(imageUrl);
        console.log("wxUtil--onShareAppMessage:", title, imageUrl);
        wx.onShareAppMessage(function () {
            return {
                title: title,
                imageUrl: imageUrl
            }
        });
    },
    /** 主动转发 */
    shareAppMessage: function (title, imageUrl) {
        if (!this.isWxPlatFrom()) return;
        //if (isMd5) imageUrl = this.getTextureUrlAtWechat(imageUrl);
        console.log("wxUtil--shareAppMessage:", title, imageUrl);
        wx.shareAppMessage({
            title: title,
            imageUrl: imageUrl
        });
    },
    // uploadScore:function(high_s){
    //     //同步最高分到微信
    //     wx.setUserCloudStorage({
    //         KVDataList:[{key:'h_score',value:""+high_s}],
    //         success:res =>{
    //             console.log("setUserInfo---success");
    //             console.log(res);
    //             //让子域更新当前用户最高分，因为主域无法得到getUserCloadStorage
    //             let openDataContext = wx.getOpenDataContext();
    //             openDataContext.postMessage({message:'updateHightScore'});
    //         },
    //         fail:res =>{
    //             console.log("setUserInfo---fail");
    //             console.log(res);
    //         },
    //     });
    // },
        // 获取启动参数
    getLaunchOptionsSync() {
        return wx.getLaunchOptionsSync();
    },

    // 获取IP地址
    getIPAddress() {
        wx.request({
            url: 'http://ip-api.com/json',
            success: function (e) {
                console.log(e.data);
                that.setData({
                    motto: e.data
                })
            }
        });
    },

    // 获取地理位置
    getLocation(cf) {
        wx.getLocation(
            {
                type: 'gcj02',
                success: function (res) {
                    console.log('获取地理位置成功');
                    console.log(res);
                    if (cf) cf(null, res);
                },
                fail: function (res) {
                    console.log('获取地理位置失败');
                    console.log(res);
                    if (cf) cf(true, res);
                },
            }
        );
    },
    // 获取头像
    createImage(sprite, url, width) {
        var image = wx.createImage();
        image.onload = function () {
            var texture = new cc.Texture2D();
            texture.initWithElement(image);
            texture.handleLoadedTexture();
            sprite.spriteFrame = new cc.SpriteFrame(texture);
            console.log('width:' + width);
            console.log('sprite.width:' + sprite.node.width);
            sprite.node.scale = width / sprite.node.width;
            console.log('sprite.scale: ' + sprite.node.scale);
        };
        image.src = url;
    },
    // 跳转其他小游戏
    goToOtherProgram(appId, path = "", cb, jumpId="") {
        if (!this.isWxPlatFrom()) return;
        var self = this;
        wx.getSystemInfo({
            success(res) {
                // 比较版本，微信6.7.1版本以上才能实现小游戏相互跳转
                var resule = self.compareVersion(res.version, "2.2.0");
                // 低于6.7.1版本，不能跳转，所以我这里直接把《推广二维码展现出来》
                if (resule < 0) {
                    wx.showModal({
                        title: '提示',
                        content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
                    });
                    if (cb) cb(false);
                } else {
                    //高于6.7.1，调用微信小游戏跳转
                    wx.navigateToMiniProgram({
                        appId: appId,   // 目标小游戏的appId，必须与当前小游戏关联同一个公众号
                        path: path, // 跳转后的场景路径
                        extraData: {
                            foo: 'bar', //带参数跳转
                            jumpId:jumpId,
                        },
                        envVersion: 'release',  //跳转的目标小游戏版本，develop（开发版），trial（体验版），release（正式版）
                        success(res) {
                            console.log("跳转到目标小游戏成功！", res);
                            if (cb) cb(true);
                        },
                        fail() {
                            console.log('跳转到目标小游戏失败！');
                            if (cb) cb(false);
                        }
                    })
                }
            },
            fail() {
                console.log('获取微信版本信息失败！');
                if (cb) cb(false);
            }
        });
    },
    //比较微信版本
    compareVersion(v1, v2) {
        v1 = v1.split('.');
        v2 = v2.split('.');
        var len = Math.max(v1.length, v2.length);
        while (v1.length < len) {
            v1.push('0');
        }

        while (v2.length < len) {
            v2.push('0');
        }

        for (var i = 0; i < len; i++) {
            var num1 = parseInt(v1[i]);
            var num2 = parseInt(v2[i]);

            if (num1 > num2) {
                return 1;
            } else if (num1 < num2) {
                return -1;
            }
        }
        return 0;
    },
    // 微信获取用户信息接口
    wxGetUserInfo(cb) {
        // 用户已授权，可以直接调用相关 API
        wx.getUserInfo({
            openIdList: ['selfOpenId'],
            fail: function (res) {
                // iOS 和 Android 对于拒绝授权的回调 errMsg 没有统一，需要做一下兼容处理
                if (res.errMsg.indexOf('auth deny') > -1 || res.errMsg.indexOf('auth denied') > -1) {
                    // 处理用户拒绝授权的情况
                    console.log('用户不同意授权,调用登陆失败');
                    if (cb) cb();
                }
            },
            success: function (res) {
                console.log('用户同意授权,调用登陆成功，并获取用户数据');
                console.log(res);
                if (cb) {
                    cb(res.userInfo);
                }
            },
        })
    },
    /**
     * 创建banner
     * @param  id : banner单元id
     */
    createBanner: function (id) {
        if (_banner) {
            _banner.destroy();
        }

        let info = wx.getSystemInfoSync();
        var o = Math.floor;
        //5625
        var r = o(1 * info.windowWidth), n = o((info.windowWidth - r) / 2), d = info.screenHeight;
        var top = d - o(r / 3.4) - (d - r / .5900) / 2;

        var newId = gGlobal.bannerId[0];
        if (_banner) {
            for (let i = 0; i < gGlobal.bannerId.length; i++) {
                if (_banner.adUnitId === gGlobal.bannerId[i]) {
                    var idx = i + 1;
                    if (idx >= gGlobal.bannerId.length) {
                        idx = 0;
                    }
                    newId = gGlobal.bannerId[idx];
                    break;
                }
            }
            _banner.destroy();
        }

        _banner = wx.createBannerAd({
            adUnitId: id || newId,
            style: {
                left: n,
                top: top,
                width: r,
            }
        });

        _banner.onLoad(() => {
            console.log('拉取banner成功！');
            _banner.show();
        });

        _banner.onResize(res => {
            let info = wx.getSystemInfoSync();
            _banner.style.left = (info.windowWidth - _banner.style.width) / 2;
            _banner.style.top = info.windowHeight - res.height;
            console.log('_banner.style.realHeight = ' + _banner.style.realHeight);
            console.log('res.width = ' + res.width + '\t' + 'res.height' + res.height);
        });

        _banner.onError(err => {
            console.log('拉取banner失败！');
            _banner = null;
        });
    },

    /**
     * 显示banner
     */
    showBanner: function () {
        this.createBanner(null, () => {
            _banner.show();
        });
    },

    /**
     * 隐藏banner
     */
    hideBanner: function () {
        if (!_banner) {
            Output.log('banner 未创建！');
            return;
        }
        _banner.hide();
    },
    wxCreateUserInfoBtn(){
        let b_width = 223.2;//279;
        let b_height = 68.8;//86;
        let left = wx.getSystemInfoSync().windowWidth / 2 - b_width / 2;
        let button = wx.getSystemInfoSync().windowHeight*0.7 - b_height / 2;//0.8
        // console.log("wxCreateUserInfoBtn--button:"+button+",left:"+left);
        return wx.createUserInfoButton({  
            type: 'image',  
            image: 'res/raw-assets/Texture/dl_btn_1.png',  
            style: {    
                left: left,    
                top: button,    
                width: b_width,    
                height: b_height,    
                // lineHeight: 40,    
                // backgroundColor: '#ff0000',    
                // color: '#ffffff',    
                // textAlign: 'center',    
                // fontSize: 16,    
                // borderRadius: 10  
            }
        });
    },

    // 登录
    login(cb) {
        var self = this;
        // 获取用户授权设置
        wx.getSetting({
            success: function (res) {
                var authSetting = res.authSetting
                if (authSetting['scope.userInfo'] === true) {
                    console.log('用户已授权,调用登陆');
                    this.wxGetUserInfo(cb);
                } else if (authSetting['scope.userInfo'] === false) {
                    // 用户已拒绝授权，再调用相关 API 或者 wx.authorize 会失败，需要引导用户到设置页面打开授权开关
                    console.log('用户已拒绝授权,需要引导用户到设置页面打开授权开关');
                    if (cb) cb();
                } else {
                    console.log('未询问过用户授权,弹窗询问用户');
                    // 未询问过用户授权，调用相关 API 或者 wx.authorize 会弹窗询问用户
                    wx.login({
                        success: function (res) {
                            console.log('调用登陆成功,res:' + JSON.stringify(res));
                            self.code = res.code;
                            this.wxGetUserInfo(cb);
                        }.bind(this),
                        fail: function (res) {
                            if (cb) cb();
                        }.bind(this)
                    });
                }
            }.bind(this)
        });
    },
    // 获取code
    getCode(cb) {
        wx.login({
            success: function (res) {
                console.log('调用登陆成功,res:' + JSON.stringify(res));
                if (cb) cb(res);
            }.bind(this),
            fail: function (res) {
                if (cb) cb();
            }.bind(this)
        });
    },
    sdkAldOnShareAppMessage(title, url){
        wx.aldOnShareAppMessage(function(){
            return {
              imageUrl : url, //转发显示图片的链接
              title    : title, //转发标题
              query    : ''
            }
        });
    },

    sdkAldShareAppMessage(title, url){
        wx.aldShareAppMessage(function(){
            return {
              imageUrl : url, //转发显示图片的链接
              title    : title, //转发标题
              query    : ''
            }
        });
    },
};

export default wxUtil;